//
//  CZMainTabBar.swift
//  SinaWeibo
//
//  Created by 浩记 on 16/3/19.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

let TabBarItemCount = 5

 /// 定义协议     协议                     继承协议
@objc protocol CZMainTabBarDelegate : NSObjectProtocol {
    optional//表示可选实现，，如果有可选实现方法，那么这个协议就需要用@objc修饰
    func mainTabBarComposeClick ()//点击撰写加号的代理方法
}

class CZMainTabBar: UITabBar {
    
    //系统自动调用在这个方法重新设置子控件的frame
    override func layoutSubviews() {
        super.layoutSubviews()
        let width = frame.width / CGFloat(TabBarItemCount)//整个tabBar宽度
        var index = 0
        for subV in subviews {//遍历到的视图是有很多，包括UITabBarBackgroundView，UITabBarButton，UIImageView
            //判断遍历到的每一个视图，如果是UITabBarButton，那么久重新设置他们的frame，中间空出一个位置添加我么要加的➕视图
            if subV.isKindOfClass(NSClassFromString("UITabBarButton")!){
                //设置每一个UITabBarButton的位置
                subV.frame = CGRect(x:CGFloat(index) * width , y: 0, width: width, height: frame.height)
                index += index == 1 ? 2 : 1 //三目运算，，可以让UITabBarButton的宽度在第二UITabBarButton的时候下标加二，预留一个宽度的位置
            }
        }
        //设置➕按钮的frame
        composeButton.frame = CGRect(x: 2 * width, y: 0, width: width, height: frame.height)
    }
    
    //MARK:- 懒加载
    private lazy var composeButton : UIButton = {
        let button = UIButton()
        //设置➕按钮的各种属性
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Selected)
        
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Selected)
        //添加到tabBar上，，懒加载里使用方法函数不能省略self？
        self.addSubview(button)
        
        //为加号按钮添加点击事件
        button.addTarget(self, action: Selector("clickComposeButton"), forControlEvents: UIControlEvents.TouchUpInside)
        
        return button
    }()
    
    //代理     代理名称            代理协议
    weak var composeDelegate : CZMainTabBarDelegate?
    //点击加号按钮事件触发
    func clickComposeButton() {
        //跳转控制器需要代理来实现，因为这个swift是个view，只有控制器才能实现跳转页面
        self.composeDelegate?.mainTabBarComposeClick?()
    }
}

//    var aaa : UILabel {
//        get{
//            return UILabel()
//        }
//        set{
//            self.aaa = UILabel()
//        }
//    }
